/**
 * 
 */
package it.unisalento.appsalento.asynctask;

import it.unisalento.R;
import it.unisalento.appsalento.constants.Constants;
import it.unisalento.appsalento.activity.MainActivity;
import it.unisalento.appsalento.activity.dialog.GenericDialog;

import java.io.IOException;
import java.lang.ref.WeakReference;

import android.app.ProgressDialog;
import android.os.AsyncTask;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * @author AGM
 * 
 */
public abstract class ActionAsyncTask extends  AsyncTask<Void, Void, Boolean> {
	
	protected ProgressDialog progress;
	protected String idAppello;
	protected WeakReference<MainActivity> mainActivityWeakRef = null;
	protected String mMessageResponse = "Appello non prenotato per problemi interni";
	
	
	
	@Override
	protected void onPreExecute() {
		super.onPreExecute();
		progress = new ProgressDialog(mainActivityWeakRef.get());
		progress.setMessage(mainActivityWeakRef.get().getResources().getString(R.string.request_progress));
		
		progress.show();

	}
	@Override
	protected void onPostExecute(Boolean result) {
		progress.hide();
		String title = Constants.TITLE_WARNING;
		if(result){
			title = Constants.TITLE_INFO;
		}
		new GenericDialog(mainActivityWeakRef.get(), mMessageResponse,title);

	}

	@Override
	protected Boolean doInBackground(Void... params) {
		
		ObjectMapper mapper = new ObjectMapper();
		boolean retVal = false;
		try {
			retVal = setData(mapper);
		} catch (Throwable e) {
			new Throwable(e);
		} 

		return retVal;
	}
	
	/**
	  * Metodo che si occupa di effettuare la chiamata ai WS.
	 * @param mapper ObjectMapper necessario per la conversione del json restituito in oggetto java.
	 * @return 
	 * <li>true : se la chiamata ai ws �� andata a buon fine</li>
	 * <li>false : se la chiamata ai ws ha restituito un errore o se il parametro status del json di risposta ��
	 * impostato a KO</li>
	 */
	public abstract boolean setData(ObjectMapper mapper) throws JsonParseException, JsonMappingException, IOException;

	
}
